Providing end users with a virtualization environment can present load balancing challenges. Other load balancing systems fail to address all of these challenges. Systems designed to deliver a virtualized environment to an end user must load balance user load amongst the various physical machines included in those systems. There are many challenges associated with trying to forecast and plan for the amount of resources required by a particular user. At any point in time, a user could require more or less resources. When a system is overloaded or otherwise not properly load balanced, the system may be unable to provide a user with the required resources in a reasonable amount of time thereby decreasing an end user's user-experience.
It is often difficult to predict not only how much load a particular user may place on a virtualization system, but also how many users a physical computer or infrastructure can support. Systems can avoid being overloaded or otherwise not properly load balanced by avoiding overloading the physical machines of the systems with more users than the hardware of the physical machines can support. By avoiding overloading, the systems can ensure that resources are delivered to users in a prompt and reasonable amount of time such that the end-user experience is optimized.
There are many challenges with trying to achieve an optimally load balanced system. Some of these challenges stem from an administrator's inability to know to a reasonable degree of certainty the amount of load a particular user may place on a system at any given instance of time. While the administrator can know and control the number and type of users of a system, it is often difficult to know the amount of resources a user will require. Users exert load on a system by consuming any of the following resources: hardware; network; storage; CPU; memory; etc. Users many not consume these resources constantly but rather their consumption amounts and periods may vary as applications are updated, additional applications are installed, or user behavior changes. In many of the above instances, a user uses resources within a user session, thus estimating user load can include estimating the load placed on the system by a user session.
Challenges associated with determining how to estimate user session capacity or the load placed on a system by a user of a user session can be exacerbated when multiple user sessions or users share a common pool of hardware resources. In some instances, administrators can determine the amount of hardware allocated to each workload a priori. These challenges apply equally to systems where users or user sessions are dedicated to a particular set of hardware such that they cannot be moved from computer to computer, and in systems that include multiple sets of hardware (e.g. computers) but a single hypervisor pool such that users or user sessions can be moved from computer to computer, but cannot be moved outside of a dedicated hypervisor pool. In each of these instances, the user or user session experiences a user-mobility boundary such as a physical computer or hypervisor pool. The user or user session cannot execute outside of the user-mobility boundary and therefore is load balanced in relation to other users or user sessions having substantially the same user-mobility boundary.